<!doctype html><html><head><meta charset="utf-8" />
<title>uuStorage.js - Reference</title>
<style type="text/css">@import url(README.css);</style>
</head>
<body>
<p>
   | <a href="http://code.google.com/p/uupaa-js-spinoff/">HOME</a>
   | <a href="./README.htm">README</a>
   | <a href="./DEMO.htm">DEMO</a>
   | <a href="./CLASS.htm">CLASS</a>
   | <a href="./CHANGELOG.htm">CHANGE LOG</a>
   | <a href="./DONATE.htm">DONATE</a>
   | <a href="./LICENSE.htm">LICENSE</a>
   |
</p>

<hr />
<a href="#uuStorage">uuStorage</a>

<hr />
<h2><a name="uuStorage">uuStorage</a></h2>
<p>HTML5::Storage 互換機能を提供します。</p>

<hr />

<dl>

<!-- -->
  <dt><a name="uu.Class.Storage">uu.Class.Storage</a></dt>
  <dd>
    <p>自動的に利用可能なストレージバックエンドを判別し、バックエンドに対する参照を保持する機能を持ったシングルトンクラスです。
        このクラスは自動的にインスタンス化されます。</p>
<pre>
uu.Class.singleton("Storage", {
    nth,            // nth(index:Number):String
    get,            // get(key:String):String
    set,            // set(key:String, value:String):Boolean
    size,           // size():Hash { used, max }
    pairs,          // pairs():Number
    clear,          // clear()
    remove,         // remove(key:String)
    getAll,         // getAll():Hash
    saveToServer,   // saveToServer(url:String, option:AjaxOptionHash = void, callback:Function = void)
    loadFromServer, // loadFromServer(url:String, option:JSONPOptionHash = void, callback:Function = void)
    toString        // toString():String
});
</pre>
  </dd>

  <dt><a name="uu.Class.Storage.nth">uu.Class.Storage.nth</a></dt>
  <dd>
    <p>Storage.nth(<i>index</i>:Number):String は、
      <i>index</i>で指定された添え字が示す key を返します。</p>
    <p>このメソッドは for (index in storage) { key = storage.nth(index) } のような用法を意図したものです。
    </p>
    <p>バックエンドによっては、index が示す key が一定ではない場合があります。
    </p>
    <p>存在しない添え字を指定すると空文字列( "" )を返します。
  </dd>

  <dt><a name="uu.Class.Storage.get">uu.Class.Storage.get</a></dt>
  <dd>
    <p>Storage.get(<i>key</i>:String):String は、
      <i>key</i> に対応する value を返します。</p>
    </p>
    <p>存在しない <i>key</i> を指定すると空文字列( "" )を返します。
    </p>
  </dd>

  <dt><a name="uu.Class.Storage.set">uu.Class.Storage.set</a></dt>
  <dd>
    <p>Storage.set(<i>key</i>:String, <i>value</i>:String):Boolean は、
      <i>key</i> と <i>value</i> からなるペアを更新するか、新規に追加します。</p>
    </p>
    <p>書き込みに失敗すると false を返します。多くの場合 false は、ストレージ容量の不足(QUOTA EXCEEDED)を意味します。
    </p>
  </dd>

  <dt><a name="uu.Class.Storage.size">uu.Class.Storage.size</a></dt>
  <dd>
    <p>Storage.size():Hash は、
      { used, max }を返します。</p>
    </p>
    <p>used は使用済みの、max は利用可能な DiskSpace のバイト数です。
    </p>
    <p>MemStorage は、常に { used: 0, max: Number.MAX_VALUE } を返します。
    </p>
  </dd>

  <dt><a name="uu.Class.Storage.pairs">uu.Class.Storage.pairs</a></dt>
  <dd>
    <p>Storage.pairs():Number は、ペア数を返します。
    </p>
  </dd>

  <dt><a name="uu.Class.Storage.clear">uu.Class.Storage.clear</a></dt>
  <dd>
    <p>Storage.clear() は、ストレージをクリアします。</p>
    </p>
    <p>CookieStorage でクリアするデータは、CookieStorage 経由で書き込んだデータに限定されます。
    </p>
  </dd>

  <dt><a name="uu.Class.Storage.remove">uu.Class.Storage.remove</a></dt>
  <dd>
    <p>Storage.remove(<i>key</i>:String) は、<i>key</i> が示す key/value pair を削除します。
    </p>
  </dd>

  <dt><a name="uu.Class.Storage.getAll">uu.Class.Storage.getAll</a></dt>
  <dd>
    <p>Storage.getAll():Hash は、全ての key/value pair を Hash で返します。</p>
    </p>
    <p>pair が無い場合は 空の Hash ( {} ) を返します。
    </p>
  </dd>

  <dt><a name="uu.Class.Storage.saveToServer">uu.Class.Storage.saveToServer</a></dt>
  <dd>
    <p>Storage.saveToServer(<i>url</i>:String, <i>option</i>:AjaxOptionHash = void, <i>callback</i>:Function = void) は、
        全ての key/value pair を json データに変換しサーバに POST します。</p>
    </p>
    <p><i>callback</i> を指定すると POST 成功または失敗でコールバックします。<i>callback</i> の第一引数は、AjaxResultHash になります。
    </p>
  </dd>

  <dt><a name="uu.Class.Storage.loadFromServer">uu.Class.Storage.loadFromServer</a></dt>
  <dd>
    <p>Storage.loadFromServer(<i>url</i>:String, <i>option</i>:JSONPOptionHash = void, <i>callback</i>:Function = void) は、
        サーバから返される key/value pair からなる json データを、ストレージにマージ(上書き)します。</p>
    </p>
    <p><i>callback</i> を指定すると POST 成功または失敗でコールバックします。<i>callback</i> の第一引数は、JSONPResultHash になります。
    </p>
    <pre>
storage.loadFromServer("http://example.com/hoge?callback=?", {}, function(jsonpResultHash) {
    if (jsonpResultHash.ok) {
        uu.puff(jsonpResultHash.json);
    }
});
    </pre>
  </dd>

  <dt><a name="uu.Class.Storage.toString">uu.Class.Storage.toString</a></dt>
  <dd>
    <p>Storage.toString():String は、バックエンドを識別する文字列を返します。</p>
    </p>
    <p>返される文字列は "LocalStorage", "FlashStorage", "IEStorage", "CookieStorage", "MemStorage" のいずれかになります。
    </p>
  </dd>

</dl>

<h3>Appendix A.</h3>

<pre>
** Predefined Types

*** AjaxOptionHash

    AjaxOptionHash = {
        xhr     - XMLHttpRequestObject:
                                new XMLHttpRequest()
                                or new ActiveXObject("Microsoft.XMLHTTP")
                                or new ActiveXObject("Microsoft.XMLDOM")
        data    - Object/String:
        header  - Array: [("key", "value"), ... ]
        method  - String(= "GET" or "POST"): "GET", "POST", "PUT", "DELETE", "HEAD"
        timeout - Number(= 10): timeout sec
        nocache - Boolean(= false):
        beforeCallback - Function(= undefined): trap before send function,
    }

*** AjaxResultHash

    AjaxResultHash = {
        ok      - Boolean: true is successed
        url     - String:
        xhr     - XMLHttpRequestObject:
                  or { responseText: "", responseXML: "", status: 400 }
        guid    - Number:
        status  - Number: 2xx, 3xx, 4xx, 5xx
        isXMLContent - Function:
    }

*** JSONPOptionHash

    JSONPOptionHash = {
        method  - String(= "callback"):
        timeout - Number(= 10): timeout sec
    }

*** JSONPResultHash

    JSONPResultHash = {
        ok      - Boolean: true is successed
        url     - String:
        json    - Mix: json data
        guid    - Number:
        status  - Number: 2xx, 3xx, 4xx, 5xx
    }
</pre>


<h3>Appendix B.</h3>
<p>LocalStorage, FlashStorage, IEStorage, CookieStorage, MemStorage の I/F です。
   これらを直接インスタンス化するには、var cookieStorage = <b>uu("CookieStorage")</b> などとします。
</p>
<pre>
uu.Class.singleton("LocalStorage", {
    init,           // init(callback:Function = void)
    nth,            // nth(index:Number):String
    get,            // get(key:String):String
    set,            // set(key:String, value:String):Boolean
    size,           // size():Hash { used, max }
    pairs,          // pairs():Number
    clear,          // clear()
    remove,         // remove(key:String)
    getAll,         // getAll():Hash
    saveToServer,   // saveToServer(url:String, option:AjaxOptionHash = void, callback:Function = void)
    loadFromServer, // loadFromServer(url:String, option:JSONPOptionHash = void, callback:Function = void)
    toString        // toString():String
});

uu.Class.singleton("FlashStorage", {
    init,           // init(callback:Function = void)
    nth,            // nth(index:Number):String
    get,            // get(key:String):String
    set,            // set(key:String, value:String):Boolean
    size,           // size():Hash { used, max }
    pairs,          // pairs():Number
    clear,          // clear()
    remove,         // remove(key:String)
    getAll,         // getAll():Hash
    saveToServer,   // saveToServer(url:String, option:AjaxOptionHash = void, callback:Function = void)
    loadFromServer, // loadFromServer(url:String, option:JSONPOptionHash = void, callback:Function = void)
    toString        // toString():String
});

uu.Class.singleton("IEStorage", {
    init,           // init(callback:Function = void)
    nth,            // nth(index:Number):String
    get,            // get(key:String):String
    set,            // set(key:String, value:String):Boolean
    size,           // size():Hash { used, max }
    pairs,          // pairs():Number
    clear,          // clear()
    remove,         // remove(key:String)
    getAll,         // getAll():Hash
    saveToServer,   // saveToServer(url:String, option:AjaxOptionHash = void, callback:Function = void)
    loadFromServer, // loadFromServer(url:String, option:JSONPOptionHash = void, callback:Function = void)
    toString        // toString():String
});

uu.Class.singleton("CookieStorage", {
    init,           // init(callback:Function = void)
    nth,            // nth(index:Number):String
    get,            // get(key:String):String
    set,            // set(key:String, value:String):Boolean
    size,           // size():Hash { used, max }
    pairs,          // pairs():Number
    clear,          // clear()
    remove,         // remove(key:String)
    getAll,         // getAll():Hash
    saveToServer,   // saveToServer(url:String, option:AjaxOptionHash = void, callback:Function = void)
    loadFromServer, // loadFromServer(url:String, option:JSONPOptionHash = void, callback:Function = void)
    toString        // toString():String
});

uu.Class.singleton("MemStorage", {
    init,           // init(callback:Function = void)
    nth,            // nth(index:Number):String
    get,            // get(key:String):String
    set,            // set(key:String, value:String):Boolean
    size,           // size():Hash { used, max }
    pairs,          // pairs():Number
    clear,          // clear()
    remove,         // remove(key:String)
    getAll,         // getAll():Hash
    saveToServer,   // saveToServer(url:String, option:AjaxOptionHash = void, callback:Function = void)
    loadFromServer, // loadFromServer(url:String, option:JSONPOptionHash = void, callback:Function = void)
    toString        // toString():String
});

</pre>

</body>
</html>
